#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

//int main() {
//    int a, b;
//    while (cin >> a >> b)
//    {
//        int sum = 0;
//        for (int i = a; i <= b; ++i)
//        {
//            int tmp = i;
//            while (tmp > 0)
//            {
//                if (tmp % 10 == 2)
//                {
//                    sum++;
//                }
//                tmp /= 10;
//            }
//        }
//        cout << sum << endl;
//    }
//    return 0;
//}


#include<iostream>
#include<set>
#include<vector>
//class Solution 
//{
//public:
    //vector<int> intersection(vector<int>& nums1, vector<int>& nums2) 
    //{
    //    set<int> s1(nums1.begin(), nums1.end());
    //    set<int> s2(nums2.begin(), nums2.end());

    //    vector<int> ret;
    //    set<int>::iterator it1 = s1.begin();
    //    set<int>::iterator it2 = s2.begin();
    //    while (it1 != s1.end() && it2 != s2.end())
    //    {
    //        if (*it1 == *it2)
    //        {
    //            ret.push_back(*it1);
    //            it1++;
    //            ++it2;
    //        }
    //        else if (*it1 < *it2)
    //        {
    //            ++it1;
    //        }
    //        else
    //        {
    //            ++it2;
    //        }
    //    }
    //    return ret;
    //}
//};

#include<string>
#include<list>
//int main()
//{
//    string s;
//    while (cin >> s)
//    {  
//        //cin >> s;
//        size_t size = s.size();
//        if (size == 0)
//            cout << 0;
//        else if (size == 1)
//            cout << s;
//        else if (size == 2)
//        {
//            if (s[0] == s[1])
//                cout << 0;
//            else
//                cout << s;
//        }
//
//        else
//        {
//            list<char> l(s.begin(), s.end());
//
//            int flag = 0;
//            while (flag == 0 )
//            {
//                flag = 1;
//                if (l.size() < 3)
//                    break;
//
//                list<char>::iterator slow = l.begin();
//                list<char>::iterator mid = ++l.begin();
//              
//                list<char>::iterator fast = ++l.begin();
//                ++fast;
//                while (fast != l.end())
//                {
//                    if (*fast == *mid)
//                    {
//                        flag = 0;
//                        ++fast;
//                        mid = l.erase(mid);
//                        mid = l.erase(mid);
//                        if (fast != l.end())
//                        {
//                            ++fast;
//                        }
//                        else
//                            break;
//                    }
//                    else
//                    {
//                        ++fast;
//                        ++slow;
//                        ++mid;
//                    }
//                }
//            }
//            if(l.size() > 1)
//            {
//                list<char>::iterator it1 = l.begin();
//                list<char>::iterator it2 = ++l.begin();
//                if (*it1 == *it2)
//                {
//                    l.erase(it1);
//                    l.erase(it2);
//                }
//            }
//            
//            string s1(l.begin(), l.end());
//            size_t size1 = s1.size();
//            if (size1 == 0)
//                cout << 0;
//            else if (size1 == 1)
//                cout << s1;
//            else if (size1 == 2)
//            {
//                if (s1[0] == s1[1])
//                    cout << 0;
//                else
//                    cout << s1;
//            }
//            else
//                cout << s1;
//        }
//    }
//    return 0;
//}

int main()
{
    string s;
    while (cin >> s)
    {
        size_t lens = s.size();
        if (lens == 0)
            cout << 0;
        else if (lens == 1)
            cout << s;
        else
        {
            list<char> l;          
            l.push_back('\0');
            for (auto i : s)
            {
                l.push_back(i);
            }

            list<char>::iterator pos = l.begin();
            list<char>::iterator slow = ++l.begin();
            list<char>::iterator fast = ++l.begin();
            ++fast;
            while (fast != l.end())
            {
                if (*fast == *slow)
                {
                    if (pos == l.begin())
                    {
                        l.erase(fast);
                        l.erase(slow);
                        slow = ++l.begin();
                        fast = ++l.begin();
                        if (fast != l.end())
                            ++fast;
                        else
                            break;
                    }
                    else
                    {
                        --pos;
                        l.erase(fast);
                        l.erase(slow);
                        slow = fast = pos;
                        ++slow;
                        ++fast;
                        ++fast;
                    }
                }
                else
                {
                    ++pos;
                    ++slow;
                    ++fast;
                }
            }
            string ret(++l.begin(), l.end());
            if (ret.size())
                cout << ret;
            else
                cout << 0;
            
        }
        cout << endl;
    }
    return 0;
}